package com.security.lambda.consumer;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

/**
 * Consumer -> 需要访问的类型T的对象，并对其执行某些操作
 *
 * @author roger
 * @email 190642964@qq.com
 * @create 2017-11-09 10:05
 **/
public class Main {

    /**
     * 对List集合进行操作
     *
     * @param list 需要进行操作的集合
     * @param c    操作表达式
     * @param <T>  类型
     */
    public static <T> void forEach(List<T> list, Consumer<T> c) {
        for (T s : list) {
            c.accept(s);
        }
    }

    public static void main(String[] args) {

        // 接收一个Integer列表，并对每个元素进行操作
        forEach(Arrays.asList(1, 2, 3, 4, 5), (Integer i) -> System.out.println(i));

        // 接收一个ConsumerEntity集合，并修改每一个元素的值
        List<ConsumerEntity> list = new ArrayList<>();
        list.add(new ConsumerEntity(10, "tom"));
        list.add(new ConsumerEntity(11, "cat"));
        list.add(new ConsumerEntity(12, "dog"));

        forEach(list, (ConsumerEntity c) -> {
            System.out.println("哈哈,给" + c.getName() + "加一岁,你们就老拉....");
            c.setAge(c.getAge() + 1);
        });

        list.stream().forEach((ce) -> System.out.println(ce));

        list.stream().forEach(consumerEntity -> consumerEntity.setAge(consumerEntity.getAge() + 1));

        list.stream().forEach((ce) -> System.out.println(ce));
    }

}
